package com.pdh.dao;

import com.pdh.bean.Courier;
import com.pdh.exception.DuplicatePhoneException;
import com.pdh.exception.UnHandleException;

import java.util.List;
import java.util.Map;

/**
 * @Author: 彭德华
 * @Date 2021-08-29 22:19
 */
public interface BaseCourierDao {
    /**
     * 于查询数据库中的快递员信息(快递员数量，日注册量)
     * @return [{size:总数,day:新增}]
     */
    Map<String, Integer> consoleCourier() throws UnHandleException;

    /**
     * 用于查询所有的快递员
     * @param paging 是否分页标记 true/false 分页/查询所有
     * @param offset sql语句起始索引
     * @param limit 页查询的数量
     * @return 快递员的集合
     */
    List<Courier> findAll(boolean paging,int offset,int limit) throws UnHandleException;

    /**
     * 根据快递员手机号查询用户信息
     * @param courierPhone 快递员手机号
     * @return 查询的快递员信息，手机号不存在时间放回null
     */
    Courier findByCourierPhone(String courierPhone) throws UnHandleException;

    /**
     * 快递员的插入
     * @param courier 录入的快递员对象
     * @return true/false
     */
    boolean insert(Courier courier) throws DuplicatePhoneException, UnHandleException;

    /**
     * 更新快递员的信息
     * @param id 待更新的快递员编号
     * @param newCourier 更新后的快递员对象
     * @return true/false
     */
    boolean update(int id,Courier newCourier) throws DuplicatePhoneException, UnHandleException;

    /**
     * 根据快递员id删除快递员信息
     *  为什么不用userPhone进行删除，因为可能一个号码对应多个用户，就删除了多个用户
     * @param id 待删除快递员id
     * @return true/false
     */
    boolean delete(int id) throws UnHandleException;

    /**
     * 用户登陆语句
     * @param courierPhone
     * @return
     */
    boolean login(String courierPhone) throws UnHandleException;

    /**
     * 更新用户登陆信息
     * @param courierPhone
     * @param ip
     * @return
     */
    boolean updateLoginInformation(String courierPhone,String ip) throws UnHandleException;

}
